package controllers;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.apache.commons.lang.StringUtils;

import models.DrMicrophone;
import models.StatefulModel;
import play.mvc.WebSocketController;
import services.DrMicroService;
import utils.HttpUtils;
import vos.ResultVo;
import vos.ReturnCode;

/**
 * 麦克风管理类
 * @author wangshaoming
 *
 */
public class MicroPhoneController extends BaseController {
//	/**
//	 * 根据url地址获取麦克风
//	 * @param url 法庭上设置的状态地址
//	 */
//	public static void getMicroPhoneByUrl(String url){
//		List<Map<String,String>> microCodes=new ArrayList<Map<String,String>>();
//		String message=HttpUtils.doGet(url);
//		if(StringUtils.isEmpty(message)){
//			renderJSON(microCodes);
//		}
//		//匹配麦克风名称
//		Pattern trp=Pattern.compile("<a href=\"(.+?)\">.+?</a>",Pattern.DOTALL|Pattern.CASE_INSENSITIVE);
//		Matcher trm=trp.matcher(message);
//		String hurl="";
//		while(trm.find()){
//			Map<String,String> map=new HashMap<String,String>();
//			String ss=trm.group(1);
//			if(ss.indexOf(".html")>0){
//				hurl=ss;
//				continue;
//			}
//			int start=ss.indexOf("/")+1;
//			int end=ss.indexOf(".");
//			map.put("id", ss.substring(start, end));
//			map.put("code", ss);
//			microCodes.add(map);
//		}
//		Map<String,Object> map=new HashMap<String,Object>();
//		map.put("hurl", hurl);
//		map.put("microCodes", microCodes);
//		renderJSON(map);
//	}
	
	public static Map<String,Object> findMicroPhoneByUrl(String url){
		List<Map<String,String>> microCodes=new ArrayList<Map<String,String>>();
		String message=HttpUtils.doGet(url);
		if(StringUtils.isEmpty(message)){
			return null;
		}
		//匹配麦克风名称
		Pattern trp=Pattern.compile("<a href=\"(.+?)\">.+?</a>",Pattern.DOTALL|Pattern.CASE_INSENSITIVE);
		Matcher trm=trp.matcher(message);
		String hurl="";
		while(trm.find()){
			Map<String,String> map=new HashMap<String,String>();
			String ss=trm.group(1);
			if(ss.indexOf(".html")>0){
				hurl=ss;
				continue;
			}
			int start=ss.indexOf("/")+1;
			int end=ss.indexOf(".");
			map.put("id", ss.substring(start, end));
			map.put("code", ss);
			microCodes.add(map);
		}
		Map<String,Object> map=new HashMap<String,Object>();
		map.put("hurl", hurl);
		map.put("microCodes", microCodes);
		return map;
	}
	/**
	 *  根据法庭获取麦克风列表
	 * @param courtid
	 */
	public static void getMicroByCourt(String courtid){
		if(StringUtils.isEmpty(courtid)){
			renderRespondJson(ReturnCode.ErrorCode, "请选择法庭");
		}
		List<DrMicrophone> phones=DrMicroService.getMicroByCourt(courtid);
		ResultVo rs=new ResultVo(ReturnCode.SuccessCode,"查询成功",phones);
		renderJSON(rs);
	}
	/**
	 * 编辑麦克风列表
	 * @param courtid
	 */
	public static void findMicroByCourt(String courtid){
		if(StringUtils.isEmpty(courtid)){
			renderRespondJson(ReturnCode.ErrorCode, "请选择法庭");
		}
		List<DrMicrophone> phones=DrMicroService.getMicroByCourt(courtid);
		renderArgs.put("microPhones", phones);
		log.info("" + phones.size());
		render("DrCourtController/maitianMicroPhoneDlg.html");
	}
	
	
	public static void getMicroPhone(String url){
		if(StringUtils.isEmpty(url)){
			renderRespondJson(ReturnCode.ErrorCode, "请输入麦克风地址");
		}
		String message=HttpUtils.doGet(url);
		if(StringUtils.isEmpty(message)){
			renderRespondJson(ReturnCode.ErrorCode, "连接地址不存在");
		}
		//匹配麦克风名称
		Pattern trp=Pattern.compile("<a href=\"(.+?)\">.+?</a>",Pattern.DOTALL|Pattern.CASE_INSENSITIVE);
		Matcher trm=trp.matcher(message);
		String hurl="";
		List<Map<String,String>> microCodes=new ArrayList<Map<String,String>>();
		while(trm.find()){
			Map<String,String> map=new HashMap<String,String>();
			String ss=trm.group(1);
			if(ss.indexOf(".html")>0){
				hurl=ss;
				continue;
			}
			String id=ss.substring(ss.indexOf("/")+1,ss.indexOf("."));
			map.put("id", id);
			map.put("name", "麦克风"+id);
			map.put("code", ss);
			microCodes.add(map);
		}
		Map<String,Object> map=new HashMap<String,Object>();
		hurl=url.replace(hurl, "");
		map.put("hurl", hurl);
		map.put("microCodes", microCodes);
		ResultVo vo=new ResultVo(ReturnCode.SuccessCode, "同步成功",map);
		renderJSON(vo);
	}
}
